package dao

import (
	"time"
)

// 这是 GoodsSpecification 的全局公开dao对象，被service层调用!
var GoodsSpecificationDao = goodsSpecificationDao{}

// 商品规格表
// 这是 goods_specification表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type GoodsSpecification struct {
	Id            int32     `json:"id" form:"id" v:"id" db:"id"`
	GoodsId       int32     `json:"goods_id" form:"goods_id" v:"goods_id" db:"goods_id"`                     // 商品表的商品ID
	Specification string    `json:"specification" form:"specification" v:"specification" db:"specification"` // 商品规格名称
	Value         string    `json:"value" form:"value" v:"value" db:"value"`                                 // 商品规格值
	PicUrl        string    `json:"pic_url" form:"pic_url" v:"pic_url" db:"pic_url"`                         // 商品规格图片
	AddTime       time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                     // 创建时间
	UpdateTime    time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`         // 更新时间
	Deleted       int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`            // 逻辑删除

}

// 注意:这是 GoodsSpecification 的私有dao对象，只能在dao层内使用!
type goodsSpecificationDao struct {
	InsertTemplate func(arg GoodsSpecification) (int64, error)                    //插入一条记录
	UpdateTemplate func(arg GoodsSpecification) (int64, error)                    //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                                  `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (GoodsSpecification, error)                     `args:"id"` //根据传入的主键获取一条记录
	List           func(arg GoodsSpecificationList) ([]GoodsSpecification, error) //模糊分页查询
}

/*
// 这是 goods_specification 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type GoodsSpecificationPostman struct {
id
goods_id
specification
value
pic_url
add_time
update_time
deleted

}*/

// 这是 goods_specification 表的批量请求参数
type GoodsSpecificationReq struct {
	List []GoodsSpecification `json:"list" form:"list"`
}

// 这是 goodsSpecificationDao.List()方法的请求参数
type GoodsSpecificationList struct {
	Page
}
